/*****************************************************************************************
# File Name:    main.cpp
# Author:       rosetmac
# Mail:         604991988@qq.com
# Created Time: Sat 08 Mar 2025 10:29:40 AM CST
**************************************************************************************/
#include <iostream>
#include <cstring>
#include <ctime>
using namespace std;
#include "ConfigManager.h"
#include "DatabaseManager.h"
#include "DeviceManager.h"
#include "ExpectionManager.h"
#include "LogManager.h"
#include "UserManager.h"

void getTime(string& timeStr, int secondsToAdd = 0) {
    time_t now = time(nullptr);
    now += secondsToAdd;
    struct tm* local = localtime(&now);
    char buffer[256];
    strftime(buffer, sizeof(buffer), "%Y年%m月%d日 %H:%M:%S", local);
    timeStr = buffer;
}

int main(int argc, char *argv[]) {
    UserManager userManager;

    // 注册用户

    // if (userManager.registerUser("lili", "123456")) {
    //     std::cout << "lili registered successfully!" << std::endl;
    // }

    // // 登录用户
    // if (userManager.loginUser("admin", "123456")) {
    //     std::cout << "Alice logged in successfully!" << std::endl;
    // }

    // // 获取用户信息
    // User* user = userManager.getUser(1);  // 假设 Alice 的 ID 是 1
    // if (user) {
    //     cout << "User ID: " << user->getId() << ", Username: " << user->getUsername() << endl;
    // }

    // // 登出用户
    // userManager.logoutUser(1);
   
    int op;
    int errorTimes = 0;  // 总的错误次数统计
    bool isExit = false;  // 标志来判断是否要退出整个程序
    while (errorTimes < 3 && !isExit) {
		string tempName;
        string tempPass;
        string tempTime;
    	//int t_Role;
        cout <<"请选择操作:1.管理员登录   2.用户登录   3.退出"<< endl;
        while (!(cin >> op) || op < 1 || op > 3) {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "输入无效，请重新输入 (1-3): ";
        }
        if (op == 1) {
			cout << "请输入用户名:" <<endl;   
            cin >> tempName; 
            cout << "请输入密码:" <<endl;   
            cin >> tempPass; 
            // 登录用户
            if (userManager.loginUser(tempName, tempPass)) {
                // 判断角色
                if (tempName == "admin") {
                    cout << "管理员登录成功!" << endl;
                    int op1;
                    bool ff = true;
                    while(ff){
                        cout <<"请选择操作:  1.查看设备状态   2.控制设备   3.添加新用户   4.删除用户   5.修改用户信息   6.返回上一级"<< endl;
                        cin >> op1;
                        switch (op1) {
                            case 1:{
                                break;
                            }
                            case 2:{
                                break;
                            }
                            case 3:{
                                //添加新用户
                                string addname;
                                string addpassword;
                                cout << "请输入用户名:" <<endl;   
                                cin >> addname; 
                                cout << "请输入密码:" <<endl;   
                                cin >> addname;
                                if (userManager.registerUser(addname,addpassword)) {
                                    cout << "注册成功!" << endl;
                                }
                                break;
                            }
                            case 4:{
                                // 删除用户
                                string deletename;
                                cout << "请输入要删除的用户名:" <<endl;   
                                cin >> deletename; 
                                if (deletename == "admin") {
                                    cout << "不能删除管理员！" << endl;
                                    break;
                                }
                                userManager.deleteUser(tempName);
                                if (!userManager.getUser(tempName)) {
                                    cout << "用户已成功删除" << endl;
                                }
                                break;
                            }
                            case 5:{
                                break;
                            }
                            case 6:{
                                //返回上一级
                                ff = false;  // 结束内层循环，返回上级菜单
                                break;
                            }
                            default:
                                cout << "请正确输入操作" << endl;
                                break;
                        }    
                    }   
                } else {
                    cout << "当前用户不是管理员" << endl;
                    continue;
                }  
            }else{
                //cout << "用户名、密码输入错误！" << endl;
                errorTimes++; // 登录失败，错误次数加1
            }
        }if (op == 2) {
			cout << "请输入用户名:" <<endl;   
            cin >> tempName; 
            cout << "请输入密码:" <<endl;   
            cin >> tempPass; 
            // 登录用户
            if (userManager.loginUser(tempName, tempPass)) {
                cout << "登录成功!" << endl;
                int op1;
                bool ff = true;
                while(ff){
                    cout <<"请选择操作:  1.查看设备状态   2.控制设备   3.修改个人信息   4.返回上一级"<< endl;
                    cin >> op1;
                    switch (op1) {
                        case 1:{
                            break;
                        }
                        case 2:{
                            break;
                        }
                        case 3:{
                            break;
                        }
                        case 4:{
                            //返回上一级
                            ff = false;  // 结束内层循环，返回上级菜单
                            break;
                        }
                        default:
                            cout << "请正确输入操作" << endl;
                            break;
                    }    
                }
            }else{
                //cout << "用户名、密码输入错误！" << endl;
                errorTimes++; // 登录失败，错误次数加1
            }      
        }else if (op == 3) {
            isExit = true;  // 设置退出标志
        }else if (op <1 || op >3){
           cout << "请输入正确的选项" << endl;
        }
    }
	if (errorTimes >= 3) {
            cout <<"由于用户名或密码连续错误三次，程序即将退出！"<< endl;
    }
    return 0;
}
